package com.generic.rangewildcard.extend;

import java.util.ArrayList;
import java.util.List;

import com.generic.rangewildcard.Apple;
import com.generic.rangewildcard.Fruit;

public class GenericsAndCovariance {

	public static void main(String[] args) {
		// 通配符?：具有任何从Fruit继承的类型的列表
		List<? extends Fruit> flist = new ArrayList<Apple>();
		flist.add(null);// 可以这样做，但没有意义
		// 唯一的限制是这个List要持有某种具体的Fruit或Fruit的子类型，但编译器并不知道具体是什么类型，所以无法保证安全的add操作
		// flist.add(new Apple());
		// flist.add(new Fruit());
		// flist.add(new Object());
		// 我们可以知道，它返回的至少是个Fruit类型
		Fruit f = flist.get(0);
	}

}
